package org.jeecg.modules.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.wms.entity.WmsPurchaseReturnExchange;
import java.util.List;
import java.util.Map;

/**
 * @Description: 采购退货换货记录表
 * @Author: jeecg-boot
 * @Date: 2023-08-10
 * @Version: V1.0
 */
public interface IWmsPurchaseReturnExchangeService extends IService<WmsPurchaseReturnExchange> {
    /**
     * 根据采购单ID查询退货/换货记录
     * 
     * @param purchaseOrderId 采购单ID
     * @return 退货/换货记录列表
     */
    List<WmsPurchaseReturnExchange> getByPurchaseOrderId(String purchaseOrderId);
    
    /**
     * 根据质检记录ID查询退货/换货记录
     * 
     * @param inspectionId 质检记录ID
     * @return 退货/换货记录列表
     */
    List<WmsPurchaseReturnExchange> getByInspectionId(String inspectionId);
    
    /**
     * 创建退货记录
     * 
     * @param params 退货参数
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> createReturnRecord(Map<String, Object> params, String username);
    
    /**
     * 创建换货记录
     * 
     * @param params 换货参数
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> createExchangeRecord(Map<String, Object> params, String username);
    
    /**
     * 处理退货/换货记录
     * 
     * @param id 记录ID
     * @param status 新状态
     * @param remark 备注
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> processRecord(String id, Integer status, String remark, String username);
    
    /**
     * 取消退货/换货记录
     * 
     * @param id 记录ID
     * @param remark 取消原因
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> cancelRecord(String id, String remark, String username);
    
    /**
     * 批量创建退货记录
     * 
     * @param params 批量退货参数
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> batchCreateReturnRecord(Map<String, Object> params, String username);
    
    /**
     * 批量创建换货记录
     * 
     * @param params 批量换货参数
     * @param username 操作用户
     * @return 操作结果
     */
    Result<?> batchCreateExchangeRecord(Map<String, Object> params, String username);
} 